Zjisteni datumu aplikace

Otázka od: Lahoda Radek

28. 4. 2004 8:35

zdravim,
jak zjistit datum kompilace aplikace?
Verzi uz vim jak, chci jeste to datum dat do about..
dekuji

Radek Lahoda



Odpovedá: Jiri Virt

28. 4. 2004 8:37

verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));

Jirka Virt


Odpovedá: Lahoda Radek

28. 4. 2004 9:03

pardon, v helpu jsem to prehlidl
DateTimeToStr(FileDateToDateTime(FileAge(FileName)));

----- Puvodni zprava -----
Od: "Lahoda Radek" <lahodar@uniplet.cz>
Komu: <delphi-l@clexpert.cz>
Odeslano: 28. dubna 2004 9:15
Predmet: Zjisteni datumu aplikace


> zdravim,
> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..
> dekuji
>
> Radek Lahoda
>
>
>
>
>
>


Odpovedá: Lahoda Radek

28. 4. 2004 9:35

to z helpu taky funguje, ale vase je kratsi  
to GetFileLastWriteTime je v cem?

----- Puvodni zprava -----
Od: "Jiri Virt" <virt@volny.cz>
Komu: <delphi-l@clexpert.cz>
Odeslano: 28. dubna 2004 9:19
Predmet: Re: Zjisteni datumu aplikace


> verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));
>
> Jirka Virt
>
>
>


Odpovedá: Dalibor Toman

28. 4. 2004 11:05

On Wednesday, April 28, 2004 9:53 AM [CET], Lahoda Radek
<lahodar@uniplet.cz> wrote:

> to z helpu taky funguje, ale vase je kratsi  
> to GetFileLastWriteTime je v cem?
>
> ----- Puvodni zprava -----
> Od: "Jiri Virt" <virt@volny.cz>
> Komu: <delphi-l@clexpert.cz>
> Odeslano: 28. dubna 2004 9:19
> Predmet: Re: Zjisteni datumu aplikace
>
>
>> verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));

Upozorneni - FileAge ani GetFileLastWrite nevraci datum kompilace
aplikace - ale datum zapisu souboru na disk. Cili prostym
prekopirovanim (instalaci) souboru dojde kjeho zmene.

Datum kompilace by snad melo byt v PE hlavicce souboru (ale je otazka,
zda kompilatory vzdy tuhle polozku nastavuji - netestoval jsem)

D. Toman


Odpovedá: Jiri Virt

28. 4. 2004 11:21

to si myslim, ze dela obsahuje ftCreationTime

jinak k tomu chybelo

function GetFileLastWriteTime(const sFileName:string):TdateTime;
var
ffd:Twin32Finddata;
dft:dword;
lft:Tfiletime;
h:Thandle;
begin
result := 0;
h := windows.findfirstfile(Pchar(sFilename),ffd);
if INVALID_HANDLE_VALUE <> h then
begin
windows.FindClose(h);
filetimetolocalfiletime(ffd.ftLastWriteTime,lft);
filetimetodosdatetime(lft,longrec(dft).hi,longrec(dft).lo);
result := FileDateToDateTime(dft);
end;
end;

verze:= DateToStr(GetFileLastWriteTime(Application.ExeName));

Jirka Virt


> Upozorneni - FileAge ani GetFileLastWrite nevraci datum kompilace
> aplikace - ale datum zapisu souboru na disk. Cili prostym
> prekopirovanim (instalaci) souboru dojde kjeho zmene.
>
> Datum kompilace by snad melo byt v PE hlavicce souboru (ale je otazka,
> zda kompilatory vzdy tuhle polozku nastavuji - netestoval jsem)
>
> D. Toman
>
>
>
>
>

Odpovedá: Dalibor Toman

28. 4. 2004 12:38

On Wednesday, April 28, 2004 10:50 AM [CET], Jiri Virt <virt@volny.cz>
wrote:

> to si myslim, ze dela obsahuje ftCreationTime

tezko.

Soubor ulozeny v NTFS (asi i v FAT32) ma nekolik polozek s casem ktere
se vztahuji k ruznym vecem:

- vytvoreni souboru (creation time) - coz obecne nema nic spolecneho s
casem kompilace (nepot po zkopirovani/instalaci kompilovaneho execka
se samozrejme vytvari novy soubor, ktery logicky muze dostat creation
data odlisne od compile time)
- posledni modifikace (last write time)
- posledni pristup (posledni cteni, posledni zapis - last access time)

pokud se nepletu.


D. Toman


Odpovedá: Jiri Virt

28. 4. 2004 13:06

nenasel sem nikde v MSDN co je co ...

ale kopirovanim se tyto casy nemeni .. meni se jen dalsi cas .. cas souboru

ftCreationTime structure that contains the time of file creation.
ftLastAccessTime structure that contains the time that the file was last
accessed.
ftLastWriteTime structure that contains the time of the last write
operation.

vic tam neni ...

zkousel sem, ale kopirovani se opravdu tyto casy nemeni ..

Jirka Virt


Odpovedá: Dalibor Toman

28. 4. 2004 15:09

On Wednesday, April 28, 2004 1:54 PM [CET], Jiri Virt <virt@volny.cz>
wrote:

> nenasel sem nikde v MSDN co je co ...
>
> ale kopirovanim se tyto casy nemeni .. meni se jen dalsi cas .. cas
> souboru
>
> ftCreationTime structure that contains the time of file creation.
> ftLastAccessTime structure that contains the time that the file was
> last accessed.
> ftLastWriteTime structure that contains the time of the last write
> operation.
>
> vic tam neni ...
>
> zkousel sem, ale kopirovani se opravdu tyto casy nemeni ..

samozrejme zalezi cim se kopiruje. Pokud kopirujici utilita precte
nastaveni casu ze stareho souboru a nastavi ho po kopirovani na novem
souboru pak se samozrejme naoko nic nezmeni.

pokud existuje datum kompilace tak je v PE hlavicce (nikoliv v
adresarove polozce). Cili je potreba prohlednout PE hlavicku (PE
Viewer od P. Vonese, knihovny z JEDI ci jak se to jmenuje atd)

Zdravi
D. Toman


Odpovedá: Ludek ZITA

28. 4. 2004 16:06

 On Behalf Of Lahoda Radek

> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..
> dekuji

Ahoj.
Napad : pridat si polozku do version info (prave tlacitko na hodnotami -
add key).
Mozna by na to slo napsat nejake udelatko do IDE, ktere by polozku
automaticky aktualizovalo.

Ludek


Odpovedá: Ondrej Kelle

28. 4. 2004 16:15

> jak zjistit datum kompilace aplikace?
> Verzi uz vim jak, chci jeste to datum dat do about..

Priamo v PE headri je na to vymedzene miesto, delphi ho vsak nevyplna.
Tu je IDE wizard, ktory ho tam po uspesnej kompilacii doplni:
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=19823
Najdes tam aj priklad, ako tu hodnotu potom precitat.

HTH
TOndrej

Odpovedá: ing. Jan Fiala

28. 4. 2004 18:23

28.4.2004 Dalibor Toman:
> samozrejme zalezi cim se kopiruje. Pokud kopirujici utilita precte
> nastaveni casu ze stareho souboru a nastavi ho po kopirovani na novem
> souboru pak se samozrejme naoko nic nezmeni.

Pokud to ovsem nekopirujes (neinstalujes) na jiny pocitac, aby ses v
About dozvedel datum a cas kompilace. A to bylo zrejem predmetem
dotazu

--
ing. Jan Fiala
mailto:jan.fiala@wo.cz

Prog-Soft s.r.o. Plzen
Informacni system pro vyrobce
a distributory napoju


Odpovedá: Lahoda Radek

4. 5. 2004 13:13

diky, koukam ze jsi autor, teda balicek se mi podarilo nainstalovat, ale
navod jak s tim pracovat tam neni, jakou metodu volat pro ulozeni/precteni?

"Ondrej Kelle" <o.kelle@digitalpublishing.de>
Odeslano: 28. dubna 2004 17:14


> > jak zjistit datum kompilace aplikace?
> > Verzi uz vim jak, chci jeste to datum dat do about..
>
> Priamo v PE headri je na to vymedzene miesto, delphi ho vsak nevyplna.
> Tu je IDE wizard, ktory ho tam po uspesnej kompilacii doplni:
> http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=19823
> Najdes tam aj priklad, ako tu hodnotu potom precitat.
>
> HTH
> TOndrej
>



Odpovedá: Ondrej Kelle

4. 5. 2004 13:46

> diky, koukam ze jsi autor, teda balicek se mi podarilo
> nainstalovat, ale navod jak s tim pracovat tam neni,
> jakou metodu volat pro ulozeni/precteni?

Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky cieloveho
spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu v
IDE.
Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
Project\Information pod "Compile stamp".

Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku: na
citanie funkcia LinkerTimeStamp, na zapis procedura UpdateLinkerTimeStamp.

HTH
TOndrej

Odpovedá: Lahoda Radek

4. 5. 2004 14:24

diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu ToolsApi
..

----- Puvodni zprava -----
Od: "Ondrej Kelle" <o.kelle@digitalpublishing.de>
Komu: <delphi-l@clexpert.cz>
Odeslano: 4. kvetna 2004 14:37
Predmet: Re: Zjisteni datumu aplikace


> > diky, koukam ze jsi autor, teda balicek se mi podarilo
> > nainstalovat, ale navod jak s tim pracovat tam neni,
> > jakou metodu volat pro ulozeni/precteni?
>
> Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky
cieloveho
> spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu v
> IDE.
> Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
> Project\Information pod "Compile stamp".
>
> Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku: na
> citanie funkcia LinkerTimeStamp, na zapis procedura UpdateLinkerTimeStamp.
>
> HTH
> TOndrej
>
>
>


Odpovedá: tondrej@t-online.de

4. 5. 2004 15:36

> diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
> ToolsApi ..

To nemas pridat do projektu, ale nainstalovat do IDE v ramci design package.
V tom prispevku na CodeCentral je to myslim popisane.

HTH
TOndrej


Odpovedá: Ing. Ludek Florian

4. 5. 2004 15:34

Cauec,

pridej cestu k unite: Delphi\Source\ToolsApi (aspon u D5).

Bye Ludan


Subject: Re: Zjisteni datumu aplikace


> diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
ToolsApi
>
> > > diky, koukam ze jsi autor, teda balicek se mi podarilo
> > > nainstalovat, ale navod jak s tim pracovat tam neni,
> > > jakou metodu volat pro ulozeni/precteni?
> >
> > Ak to mas nainstalovane v IDE, pise to aktualny cas do PE hlavicky
> cieloveho
> > spustitelneho suboru automaticky po kazdej uspesnej kompilacii projektu
v
> > IDE.
> > Hodnotu, ktora je v PE headri zapisana, to ukazuje v dialogu
> > Project\Information pod "Compile stamp".
> >
> > Ak to chces robit z vlastneho programu, priklad najdes v tom zdrojaku:
na
> > citanie funkcia LinkerTimeStamp, na zapis procedura
UpdateLinkerTimeStamp.
> >
> > HTH
> > TOndrej
> >
> >
> >
>
>
>


Odpovedá: Ondrej Kelle

4. 5. 2004 15:46

> pridej cestu k unite: Delphi\Source\ToolsApi (aspon u D5).

Od D6 to uz neplati, designtime kod musi byt oddeleny od runtime:
http://community.borland.com/article/0,1410,27717,00.html

HTH
TOndrej


Odpovedá: Lahoda Radek

5. 5. 2004 8:22

nainstalovane v IDE to mam, ale ptal jsem se, jakou metodou to pak precist v
programu [v about], rikals LinkerTimeStamp, tak jsem ji ykousel volat, ale
program ji neynal, no a po pridani pas do projektu yas neynal to api, tak
jsem to y toho pas vzmayal, trochu upravil a kupodivu to funguje


----- Puvodni zprava -----
Od: <tondrej@t-online.de>
Komu: <delphi-l@clexpert.cz>
Odeslano: 4. kvetna 2004 15:43
Predmet: Re: Zjisteni datumu aplikace


> > diky, zkousel jsem tedy ten pas pridat do projektu, ale nezna unitu
> > ToolsApi ..
>
> To nemas pridat do projektu, ale nainstalovat do IDE v ramci design
package.
> V tom prispevku na CodeCentral je to myslim popisane.
>
> HTH
> TOndrej
>
>
>
>


Odpovedá: tondrej@t-online.de

5. 5. 2004 9:10

> nainstalovane v IDE to mam, ale ptal jsem se, jakou metodou to pak
> precist v programu [v about], rikals LinkerTimeStamp, tak jsem ji
> ykousel volat, ale program ji neynal, no a po pridani pas do projektu
> yas neynal to api, tak jsem to y toho pas vzmayal, trochu upravil a
> kupodivu to funguje

Da sa to spravit aj tak, ale nebolo by jednoduchsie si tu funkciu skopirovat
niekam do svojej unity?
Obavam sa, ze tie upravy, ktore si urobil, aby si mohol skompilovat ten
zdrojak v svojom projekte, sposobia, ze sa Ti nabuduce nepodari prekompilovat
tu design package.

HTH
TOndrej